import globals from 'globals'
import pluginJs from '@eslint/js'
import pluginVue from 'eslint-plugin-vue'

export default [
  pluginJs.configs.recommended,
  ...pluginVue.configs['flat/essential'],
  {
    ignores: ['static/**']
  },
  {
    languageOptions: {
      globals: {
        ...globals.browser,
        __dirname: 'readonly',
        process: 'readonly'
      }
    },
    rules: {
      'no-var': 'error', // 要求使用 let 或 const 而不是 var
      'no-unused-vars': 'error', // 禁止出现未使用过的变量
      'no-await-in-loop': 'error', // 禁止在循环中出现await
      'no-constant-condition': 'error', // 禁止在条件中使用常量表达式
      'no-duplicate-imports': 'error', // 禁止重复模块导入
      'no-fallthrough': 'error', // 禁止 case 语句落空
      'no-undef': 'error', // 禁止使用未声明的变量
      'no-unexpected-multiline': 'error', // 禁止出现令人困惑的多行表达式
      'camelcase': 'error', // 强制使用骆驼拼写法命名约定
      'default-case': 'error', // 要求 switch 语句中有 default 分支
      'default-case-last': 'error', // 要求 default 分支默认情况最后一个
      'no-nested-ternary': 'error', // 禁止使用嵌套的三元表达式
      'comma-dangle': ['error', 'never'], // 要求或禁止末尾逗号、
      'quotes': ['error', 'single'], // 强制使用一致的反勾号、双引号或单引号
      'max-depth': ['error', 4], // 强制块语句的最大可嵌套深度
      'no-empty': ['error', { allowEmptyCatch: true }], // 禁止出现空语句块
      'semi': ['error', 'never'], // 要求或禁止使用分号代替 ASI
      'indent': ['error', 2, { SwitchCase: 1 }], // 强制使用一致的缩进
      'vue/multi-word-component-names': 'off' // 组件名必须是多个单词
    }
  }
]
